🎖️GitЯра🎖️
Node / meshtastic / Meshtastic-Android / files / build-logic / convention / src / main / kotlin / AboutLibrariesConventionPlugin.kt
Displaying Raw • Download
build-logic/convention/src/main/kotlin/AboutLibrariesConventionPlugin.kt bd2863243bab6eb213401d949839a2bc74dde7e2 (bd286324) Text, 3.88 KB
T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72import T7ee787com.mikepenz.aboutlibraries.plugin.AboutLibrariesExtension
Tff7b72import T7ee787com.mikepenz.aboutlibraries.plugin.DuplicateMode
Tff7b72import T7ee787com.mikepenz.aboutlibraries.plugin.DuplicateRule
Tff7b72import T7ee787org.gradle.api.Plugin
Tff7b72import T7ee787org.gradle.api.Project
Tff7b72import T7ee787org.gradle.kotlin.dsl.configure
Tff7b72import T7ee787org.meshtastic.buildlogic.libs
Tff7b72import T7ee787org.meshtastic.buildlogic.plugin
Tff7b72class T56d364AboutLibrariesConventionPlugin Tb4b4b4: Te6edf3PluginTff7b72<Te6edf3ProjectTff7b72> Tb4b4b4{
Tff7b72override Tff7b72fun Td2a8ffapplyTb4b4b4(Te6edf3targetTb4b4b4: Te6edf3ProjectTb4b4b4) Tb4b4b4{
Te6edf3withTb4b4b4(Te6edf3targetTb4b4b4) Tb4b4b4{
Te6edf3pluginManagerTb4b4b4.Te6edf3applyTb4b4b4(Te6edf3libsTb4b4b4.Te6edf3pluginTb4b4b4(Ta5d6ff"Ta5d6ffaboutlibrariesTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3pluginIdTb4b4b4)
Te6edf3extensionsTb4b4b4.Te6edf3configureTff7b72<Te6edf3AboutLibrariesExtensionTff7b72> Tb4b4b4{
T8b949e// aboutLibraries.release=true is only passed for google builds (see Fastfile).
T8b949e// For fdroid/reproducible builds, offlineMode=true ensures no network calls
T8b949e// and deterministic output. See: https://github.com/meshtastic/Meshtastic-Android/issues/3231
Tff7b72val Te6edf3isReleaseBuild Tff7b72=
Te6edf3providersTb4b4b4.Te6edf3gradlePropertyTb4b4b4(Ta5d6ff"Ta5d6ffaboutLibraries.releaseTa5d6ff"Tb4b4b4)Tb4b4b4.Te6edf3map Tb4b4b4{ Tffa657itTb4b4b4.Te6edf3toBooleanTb4b4b4(Tb4b4b4) Tb4b4b4}Tb4b4b4.Te6edf3getOrElseTb4b4b4(Tff7b72falseTb4b4b4)
Tff7b72val Te6edf3ghToken Tff7b72= Te6edf3providersTb4b4b4.Te6edf3environmentVariableTb4b4b4(Ta5d6ff"Ta5d6ffGITHUB_TOKENTa5d6ff"Tb4b4b4)
T8b949e// Shared directory of manually supplied license texts (config/aboutlibraries/licenses/*.json),
T8b949e// matched by `hash`. Offline mode never fetches SPDX/remote texts, so without these the
T8b949e// open-source-licenses screen would be missing license bodies in fdroid/reproducible builds.
T8b949e// Supplying them also makes release builds deterministic (no network fetch when content exists).
Tff7b72val Te6edf3licenseConfigDir Tff7b72= Te6edf3isolatedTb4b4b4.Te6edf3rootProjectTb4b4b4.Te6edf3projectDirectoryTb4b4b4.Te6edf3dirTb4b4b4(Ta5d6ff"Ta5d6ffconfig/aboutlibrariesTa5d6ff"Tb4b4b4)
Te6edf3offlineModeTb4b4b4.Te6edf3setTb4b4b4(Tff7b72!Te6edf3isReleaseBuildTb4b4b4)
Te6edf3collect Tb4b4b4{
Te6edf3configPathTb4b4b4.Te6edf3setTb4b4b4(Te6edf3licenseConfigDirTb4b4b4)
Te6edf3fetchRemoteLicenseTb4b4b4.Te6edf3setTb4b4b4(Te6edf3isReleaseBuild Tff7b72&Tff7b72& Te6edf3ghTokenTb4b4b4.Te6edf3isPresentTb4b4b4)
Te6edf3fetchRemoteFundingTb4b4b4.Te6edf3setTb4b4b4(Te6edf3isReleaseBuild Tff7b72&Tff7b72& Te6edf3ghTokenTb4b4b4.Te6edf3isPresentTb4b4b4)
Tff7b72if Tb4b4b4(Te6edf3ghTokenTb4b4b4.Te6edf3isPresentTb4b4b4) Tb4b4b4{
Te6edf3gitHubApiTokenTb4b4b4.Te6edf3setTb4b4b4(Te6edf3ghTokenTb4b4b4.Te6edf3getTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4}
Te6edf3export Tb4b4b4{
Te6edf3excludeFieldsTb4b4b4.Te6edf3setTb4b4b4(Te6edf3listOfTb4b4b4(Ta5d6ff"Ta5d6ffgeneratedTa5d6ff"Tb4b4b4)Tb4b4b4)
Te6edf3outputFileTb4b4b4.Te6edf3setTb4b4b4(Te6edf3fileTb4b4b4(Ta5d6ff"Ta5d6ffsrc/main/resources/aboutlibraries.jsonTa5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Te6edf3library Tb4b4b4{
Te6edf3duplicationModeTb4b4b4.Te6edf3setTb4b4b4(Te6edf3DuplicateModeTb4b4b4.Te6edf3MERGETb4b4b4)
Te6edf3duplicationRuleTb4b4b4.Te6edf3setTb4b4b4(Te6edf3DuplicateRuleTb4b4b4.Te6edf3SIMPLETb4b4b4)
Tb4b4b4}
Tb4b4b4}
T8b949e// Ensure aboutlibraries.json is generated before resource processing.
T8b949e// The file is gitignored and must be generated fresh each build.
T8b949e// offlineMode is already true when aboutLibraries.release is not passed,
T8b949e// ensuring deterministic output for fdroid/reproducible builds.
T8b949e// See: https://github.com/meshtastic/Meshtastic-Android/issues/3231
Te6edf3tasks
Tb4b4b4.Te6edf3matching Tb4b4b4{
Tffa657itTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"Ta5d6ffprocessTa5d6ff"Tb4b4b4) Tff7b72&Tff7b72&
Tb4b4b4(Tffa657itTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"Ta5d6ffResourcesTa5d6ff"Tb4b4b4) Tff7b72|Tff7b72| Tffa657itTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"Ta5d6ffJavaResTa5d6ff"Tb4b4b4)Tb4b4b4)
Tb4b4b4}
Tb4b4b4.Te6edf3configureEach Tb4b4b4{ Te6edf3dependsOnTb4b4b4(Ta5d6ff"Ta5d6ffexportLibraryDefinitionsTa5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Served by rngit 1.5.0 - Generated in 0.05s